Формат пакета данных от датчиков c LoRaWAN

Структура пакета с данными

Структура пакета с данными имеет переменную длину и может содержать до 8 различных параметров, передаваемых от датчика.
И имеет следующую структуру:

typedef struct { union{ LORA_VALUE_t payload[]; uint8_t raw[48]; }DATA_u; }LORA_MESSAGE_t;

Каждый параметр (LORA_VALUE_t) в свою очередь описывается структурой:

typedef struct{ LORA_MESSAGE_TYPE_e type; //тип данных uint8_t value[]; //массив с данными, LittleEndian }LORA_VALUE_t;

Внимание ! Данные отправляются и принимаются на FPort равном 2

Доступные типы данных LORA_MESSAGE_TYPE_e

Значение Описание Тип Размер
0, 0x01 Ток прибора IEE754 Float 4
1, 0x01 Значение первичной величины VALUE_t 5
2, 0x02 Значение статуса работы устройства STATUS_t 1
3, 0x03 Уникальный номер прибора uint24_t 3
4, 0x04 Минимальное значение диапазона измерения PV VALUE_t 5
5, 0x05 Максимальное значение диапазона измерения PV VALUE_t 5
6, 0x06 Значение дополнительного статуса устройства зарезервировано 4
7, 0x07 Значение процента от диапазона измерения IEE754 Float 4
8, 0x08 Уникальный адрес устройства для LoRa P2P LoRa DevAddr 4
9, 0x09 Интервал измерения и передачи для LoRa P2P internal 4
10, 0x0A Подтверждение приема для LoRa P2P internal 1
11, 0x0B Идентификатор пакета LoRa P2P internal 4
12, 0x0C Оставшийся процент элемента питания IEE754 Float 4
13, 0x0D Уровень RSSI и SNR от принятого сообщения прибором RSSI_SNR_t 4
14, 0x0E Значение статуса работы радиопередатчика SELF_STATE_t 2
15, 0x0F Запрос параметров устройства CONF_GETBLOCK_t 2
16, 0x10 Параметры «Информация об устройстве» CONF_DEVICE_INFO_t 13
17, 0x11 Параметры «Отслеживание пороговых значений» CONF_THRESHOLD_t 15
18, 0x12 Параметры «Измерение и передача» CONF_MEASURE_t 4
19, 0x13 Параметры «LoRa» CONF_LORA_t 7
20, 0x14 Параметры «Бесконтактный переключатель» CONF_REED_t 2
21, 0x15 Время и дата UNIX-time 4
22, 0x16 Значение вторичной величины (SV) VALUE_t 5
23, 0x17 Минимальное значение диапазона измерения SV VALUE_t 5
24, 0x18 Максимальное значение диапазона измерения SV VALUE_t 5
25, 0x19 Значение третичной величины (TV) VALUE_t 5
26, 0x1A Минимальное значение диапазона измерения TV VALUE_t 5
27, 0x1B Максимальное значение диапазона измерения TV VALUE_t 5
28, 0x1C Значение четверичной величины (QV) VALUE_t 5
29, 0x1D Минимальное значение диапазона измерения QV VALUE_t 5
30, 0x1E Максимальное значение диапазона измерения QV VALUE_t 5

Описание доступных типов данных

Тип данных VALUE_t

Байт Описание Тип Размер
0 Величина СИ SI_TYPE_e 1
1 - 4 Значение IEE754 Float 4

Тип данных STATUS_t

Байт Описание Тип Размер
0
Бит Описание
0 Первичная величина за диапазоном измерения
1 Вторичная величина за диапазоном измерения
2 Токовая петля в насыщении
3 Токовая петля в фиксированном значении
4 Доступны дополнительные статусы работы устройства
5 Холодный старт
6 Конфигурация изменена
7 Устройство неисправно
Битовое поле 1

Тип данных SI_TYPE_e

Байт Описание Тип Размер
0
Значение Описание
0 Неопределена
1 inH2O, дюймы вод. ст. при 20 градусах Цельсия
2 inHg, дюймы рт. ст.
3 ftH2O, футы вод. ст. при 20 градусах Цельсия
4 mmH2O, мм вод. ст. при 20 градусах Цельсия
5 mmHg, мм рт. ст. при 0 градусах Цельсия
6 psi, фунт на квадратный дюйм
7 bar, бар
8 mBar, миллибар
9 g/cm2, грамм силы на сантиметр квадратный
10 kg/cm2, килограмм силы на сантиметр квадратный
11 Pa, паскаль
12 kPa, килопаскаль
13 Torr, торр
14 atm, атмосфера
32 °С, градус Цельсия
33 °F, градус Фаренгейта
34 °Ra, градус Ранкина
35 K, градус Цельсия
36 mV, милливольты
37 Ohm, сопротивление в Омах
39 mA, миллиамперы
57 %, проценты
58 V, вольты
145 inH2O (60 °F), дюймы вод. ст. при 60 градусах Фаренгейта
163 kΩ, килоомы
170 cmH2O (4 °C), сантиметры вод. ст. при 4 градусах Цельсия
171 mH2O (4 °C), метры вод. ст. при 4 градусах Цельсия
172 cmHg, сантиметры рт. ст. при 0 градусах Цельсия
173 lb/ft2, фунт на квадратный фут
174 hPa, гектопаскаль
175 psia, фунт на квадратный дюйм абсолютный
176 kg/m2, килограмм силы на метр квадратный
177 ftH2O (4 °C), футы вод. ст. при 4 градусах Цельсия
178 ftH2O (60 °F), футы вод. ст. при 60 градусах Фаренгейта
179 mHg, метры рт. ст. при 0 градусах Цельсия
180 Mpsi, мегафунт на квадратный дюйм
181 oz/in2, унция на квадратный дюйм
237 MPa, мегапаскаль
238 inH2O (4 °C), дюймы вод. ст. при 4 градусах Цельсия
239 mmH2O (4 °C), мм вод. ст. при 4 градусах цельсия
Enum 1

Тип данных SELF_STATE_t

Байт Описание Тип Размер
0
Бит Описание
0 Поврежден сектор с заводскими настройкам прибора
1 Поврежден сектор с резервными настройками прибора
2 Поврежден сектор с настройками прибора
3 Ошибка АЦП
4 Ошибка вторичного преобразователя
5 Активирован магнитный переключатель, геркон
6 Ошибка встроенного архива измерений
7 Ошибка FRAM
Битовое поле 1
1
Бит Описание
0 Активирован пороговый детектор по минимальной границе
1 Активирован пороговый детектор по максимальной границе
2-7 Зарезервировано
Битовое поле 1

Тип данных CONF_GETBLOCK_t

Внимание!
При запросе необходимо учитывать максимальную длину ответного пакета для радиопередачи: для режимов LoRaWAN DR0 - DR2 она составляет 53 байта

Байт Описание Тип Размер
0
Бит Описание
0 Блок "Информация об устройстве"
1 Блок "Отслеживания пороговых значений"
2 Блок "Измерение и передача"
3 Блок "LoRa"
4 Блок "Бесконтактный переключатель"
5 - 7 Зарезервировано
Битовое поле 1
1
Бит Описание
0 - 7 Зарезервировано
Битовое поле 1

Тип данных RSSI_SNR_t

Байт Описание Тип Размер
0 - 1 RSSI int16_t 2
2 - 3 SNR int16_t 2

Тип данных CONF_DEVICE_INFO_t

Байт Описание Тип Размер
0 - 1 Версия ПО (major << 8) + minor 2
2 - 3 Версия аппаратного обеспечения (major << 8) + minor 2
4 - 7 Контрольная сумма ПО uint32_t 4
8 - 11 Контрольная сумма метрологической части ПО uint32_t 4
12 Способ измерения
Значение Описание
0 Токовая петля
1 HART
2 SWIRE
1

Тип данных CONF_THRESHOLD_t

Байт Описание Тип Размер
0 Отслеживаемый параметр
Значение Описание
0 Ток
1 PV
2 Процент
1
1 - 4 Значение MIN IEE754 Float 4
5 - 8 Значение MAX IEE754 Float 4
9 - 12 Значение гистерезиса IEE754 Float 4
13 Отслеживать падение ниже уровня (MIN - гистерезис) bool 1
14 Отслеживать превышение над уровнем (MAX + гистерезис) bool 1

Тип данных CONF_MEASURE_t

Байт Описание Тип Размер
0 Отправляемая переменная
Значение Описание
0 Установленный ток
1 PV и %
1
1 Время выхода на режим, в сек uint8_t, от 4 до 15 1
2 Интервал передачи, в мин uint8_t, от 1 до 30 1
3 Интервал измерения, в мин uint8_t, от 1 до 240 1

Тип данных CONF_LORA_t

Байт Описание Тип Размер
0 Кол-во попыток передачи uint8_t, от 1 до 10 1
1 Скорость передачи данных
Значение Описание
0 DR0
1 DR1
2 DR2
3 DR3
4 DR4
5 DR5
1
2 Мощность передатчика uint8_t, от 0 до 14 1
3 Активность LBT/CAD bool 1
4-5 Уровень RSSI для LBT int16_t, от -125 до 0 1
6 Время сканирования эфира LBT, в мсек uint8_t, от 5 до 250 1

Тип данных CONF_REED_t

Байт Описание Тип Размер
0 Активность бесконтактного переключателя "геркон" bool 1
1 Время выхода на режим при срабатывании, в сек uint8_t, от 4 до 15 1

Пример декодирования

Принятый пакет с данными [02000078BE7F40]

0x02 – Тип «Значение статуса работы устройства»
0x00 – значение
0x00 – Тип «Ток прибора»
[0x78, 0xBE, 0x7F, 0x40] Значение в IEE754 Float , от младшего к старшему

{ Status: { PrimaryVariableOutOfLimits: false, NonPrimaryVariableOutOfLimits: false, LoopCurrentSaturated: false, MoreStatusAvailable: false, ColdStart: false, ConfigurationChanged: false, DeviceMalfunction: false } Current: {value: '3.996'} }

Принятый пакет с данными [140106 0e1000 0c84ffc742 104601140188af3fdd0000000001 11020000a0410000a0420000a0400000 1201040303 1303050800b0ff01]

{ ConfREED: { IsReedActive: true, ReedWarmUpDelay: 6 }, ConfREEDRaw: { value: '0106', si: 'Undef' }, SelfState: { ErrorFactorySettings: false, ErrorReservedSettings: false, ErrorUserSettings: false, ErrorADC: false, ErrorTransmitter: true, IsReedBeenActivated: false }, SelfStateRaw: { value: '0x10', si: 'Undef' }, Battery: { value: 99.999, si: '%' }, ConfDEVICEINFO: { VersionFW: '1.70', VersionHW: '1.20', CRC_FW: '0xdd3faf88', CRR_Metrolog: '0x0', MeasureMethod: 'HART' }, ConfDEVICEINFORaw: { value: '4601140188af3fdd0000000001', si: 'Undef' }, ConfTHRESHOLD: { InitialValue: 'Percent', ThresholdMin: 20, ThresholdMax: 80, ThresholdHyst: 5, ThresholdEnMin: false, ThresholdEnMax: false }, ConfTRESHOLDRaw: { value: '020000a0410000a0420000a0400000', si: 'Undef' }, ConfMEASURE: { SendVar: 'Pv & Percent', WarmUpDelay: 4, SendPeriodMins: 3, MeasurePeriodMins: 3 }, ConfMEASURERaw: { value: '01040303', si: 'Undef' }, ConfLoRa: { RetransmissionCount: 3, DR: 5, TxPower: 8, IsLBTEnable: false, LBTRSSI: -80, LBTScanTime: 1 }, ConfLORARaw: { value: '03050800b0ff01', si: 'Undef' } }